package niuke;

import java.util.*;

public class niuKeMain12 {
    public int maxLength (int[] arr) {
        // write code here
        if (arr==null)  return 0;
        int size=0;
        int n= arr.length;
        for (int i = 0; i < n-1; i++) {
            int j = i+1;
            HashSet<Integer> set=new HashSet<>();
            set.add(arr[i]);
            for (; j < n; j++) {
                if (set.contains(arr[j])){
                    break;
                }
                set.add(arr[j]);
            }
            size=Math.max(size,set.size());
        }
        return size;
    }
    public ArrayList<ArrayList<Integer>> threeSum(int[] num) {
        ArrayList<ArrayList<Integer>> list=new ArrayList<>();
        int n=num.length;
        if (n<3||list==null){
            return list;
        }
        Arrays.sort(num);
        for (int i = 0; i <= n-3; i++) {
            for (int j = i+1; j <= n-2; j++) {
                ArrayList<Integer> list1=new ArrayList<>();
                for (int k = j+1; k <= n-1; k++) {
                    if (num[i]+num[j]+num[k]==0){
                        list1.add(num[i]);
                        list1.add(num[j]);
                        list1.add(num[k]);
                        break;
                    }
                }
//                Collections.sort(list1);
                if (!list1.isEmpty()){
                    int s=list.size();
                    int k=0;
                    int count=0;
                    for (; k < s; k++) {
                        ArrayList<Integer> list2=list.get(k);
                        int l = 0;
                        for (; l < 3; l++) {
                            if (list2.get(l)!=list1.get(l)){
                                break;
                            }
                        }
                        if (l>=3){
                            break;
                        }else {
                            count++;
                        }
                    }
                    if (count==s){
                        list.add(list1);
                    }
                }

            }
        }
        return list;
    }
    public int numKLenSubstrRepeats (String s, int k) {
        // write code here
        int n=s.length();
        if (n<=k){
            HashSet<Character> set=new HashSet<>();
            for (int i = 0; i < n; i++) {
                char ch=s.charAt(i);
                if (set.contains(ch)){
                    return 1;
                }
                set.add(ch);
            }return 0;
        }
        int count=0;
        for (int i = 0; i <= n-k; i++) {
            HashSet<Character> set=new HashSet<>();
            int j=i+k;
            for (int l = i; l < j; l++) {
                char ch=s.charAt(l);
                if (set.contains(ch)){
                    count++;
                    break;
                }
                set.add(ch);
            }
        }
        return count;
    }
    public String solve (String s, String t) {
        // write code here
        if (s==null){
            return t;
        }if (t==null){
            return s;
        }
        int ns=s.length()-1;
        int nt=t.length()-1;
        int tmp=0;
        StringBuilder str=new StringBuilder();
        while (ns>=0||nt>=0){
            if (ns>=0){
                char ch=s.charAt(ns);
                tmp=tmp+ch-'0';
                ns--;
            }if (nt>=0){
                char ch=t.charAt(nt);
                tmp=tmp+ch-'0';
                nt--;
            }
            str.append(tmp%10);
            tmp=tmp/10;
        }
        if (tmp>0){
            str.append(tmp);
        }
        str.reverse();
        return str.toString();
    }
}
